package cn.tedu.dao;

import cn.tedu.entity.Cart;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CartMapper {

    /**
     * 添加购物车，插入所有商品信息
     * @param record    商品信息对象
     * @return          返回插入商品id
     */
    Integer insert(Cart record);

    /**
     * 获取记录的数量
     * @param uid 用户id
     * @param goodsId 商品id
     * @return 记录的数量，由于业务层应该维护对应的业务逻辑，返回值应该是0或1。
     */
    Integer getRecordCount(
            @Param("uid")		Integer uid,
            @Param("goodsId")	Integer goodsId);

    /**
     * 调整购物车中某商品数量
     * @param uid 用户id
     * @param goodsId 商品id
     * @param amount 调整值，可以是正数，也可以是负数
     * @return 受影响的行数
     */
    Integer changeGoodsCount(
            @Param("uid")		Integer uid,
            @Param("goodsId")	Integer goodsId,
            @Param("amount")	Integer amount);

    /**
     * 获取购物车中的商品列表
     * @param uid 用户id
     * @return 购物车中的商品列表
     */
    List<Cart> getCartList(Integer uid);

    /**
     * 根据id获取购物车的商品信息
     * @param id    购物车中的数据id
     * @param uid   用户id
     * @return      获取到的信息
     */
    Cart getCartById(
            @Param("uid") Integer uid,
            @Param("id") Integer id);
}